﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Cotizav.CONEXION;
using System.Data;

namespace Cotizav.CONTROLADOR
{
    class CtrlCondicionCotizacion
    {
        ConexionDataContext conexion;

        CtrlCondicion ctCondicion;

        public CtrlCondicionCotizacion()
        {
            ctCondicion = new CtrlCondicion();
        }
        
        internal void registrarCondicionCotizacion(CONEXION.CONDICION_COTIZACION ccond, CONEXION.COTIZACION cotiz)
        {
            using (conexion = new ConexionDataContext())
            {
                try
                {
                    ccond.idCotizacion = cotiz.idCotizacion;

                    conexion.CONDICION_COTIZACION.InsertOnSubmit(ccond);
                    conexion.SubmitChanges();
                }
                catch (Exception)
                {
                    throw;
                }
            }
        }

        internal List<CONDICION> getListCondicionCotizacion(string idCotizacion)
        {
            using (conexion = new ConexionDataContext())
            {
                try
                {
                    List<CONDICION> condiciones = new List<CONDICION>();
                    List<CONDICION_COTIZACION> condicionesCotizacion = conexion.CONDICION_COTIZACION.Where(x => x.idCotizacion == idCotizacion && x.eliminado == 0).ToList();

                    foreach (CONDICION_COTIZACION condcot in condicionesCotizacion)
                    {
                        CONDICION cond = ctCondicion.getCondicion(condcot.idCondicion);
                        condiciones.Add(cond);
                    }

                    return condiciones;
                }
                catch (Exception)
                {
                    throw;
                }
            }
        }


        internal DataTable getListCondicionCotizacion_Alquiler(string idCotizacion)
        {
            DataTable result = new DataTable();

            using (conexion = new ConexionDataContext())
            {
                var query = conexion.usp_listarCondicionCotizacion_Alquiler(idCotizacion);

                result.Columns.Add("nombreCondicion", Type.GetType("System.String"));
                result.Columns.Add("tipoCondicion", Type.GetType("System.String"));

                DataRow dr;

                foreach (var c in query)
                {
                    dr = result.NewRow();

                    dr[0] = c.nombreCondicion.Trim();
                    dr[1] = c.tipoCondicion.Trim();

                    result.Rows.Add(dr);
                }

                return result;
            }
        }

        internal DataTable getListCondicionCotizacion_Comercial(string idCotizacion)
        {            
            DataTable result = new DataTable();

            using (conexion = new ConexionDataContext())
            {
                var query = conexion.usp_listarCondicionCotizacion_Comercial(idCotizacion);

                result.Columns.Add("nombreCondicion", Type.GetType("System.String"));
                result.Columns.Add("tipoCondicion", Type.GetType("System.String"));

                DataRow dr;

                foreach (var c in query)
                {
                    dr = result.NewRow();

                    dr[0] = c.nombreCondicion.Trim();
                    dr[1] = c.tipoCondicion.Trim();

                    result.Rows.Add(dr);
                }

                return result;
            }
        }

        internal DataTable getListCondicionCotizacion_InformacionAdicional(string idCotizacion)
        {
            DataTable result = new DataTable();

            using (conexion = new ConexionDataContext())
            {
                var query = conexion.usp_listarCondicionCotizacion_InformacionAdicional(idCotizacion);

                result.Columns.Add("nombreCondicion", Type.GetType("System.String"));
                result.Columns.Add("tipoCondicion", Type.GetType("System.String"));

                DataRow dr;

                foreach (var c in query)
                {
                    dr = result.NewRow();

                    dr[0] = c.nombreCondicion.Trim();
                    dr[1] = c.tipoCondicion.Trim();

                    result.Rows.Add(dr);
                }
            }

            return result;                        
        }
    }
}
